from builtins import print as _print
from sys import _getframe


# 自定义print函数 方便输出时候带上行号
def print(*arg, **kw):
	s = f'第{_getframe(1).f_lineno}行：'  # 注此处需加参数 1。
	return _print(s, *arg, **kw)


# ### time 时间模块
import time

# time()          获取本地时间戳
res = time.time()
print(res)

# localtime <=> mktime => ctime

# localtime()     获取本地时间元组          (参数是时间戳,默认当前)
# 默认当前时间元组
ttp = time.localtime()
print(ttp)

# 指定具体的时间戳
ttp = time.localtime(1601360000)
print(ttp)

# mktime()        通过时间元组获取时间戳    (参数是时间元组)
res1 = time.mktime(ttp)
print(res1)

# ctime()         获取本地时间字符串(参数是时间戳,默认当前)
# 默认当前时间戳
res = time.ctime()
print(res)

# 指定具体的时间戳
res = time.ctime(res1)
print(res)

# asctime()  通过时间元组获取时间字符串(参数是时间元组) (了解)
"""只能通过手动的形式来调星期"""
ttp = (2020, 9, 29, 16, 48, 30, 0, 0, 0)
res = time.asctime(ttp)
print(res)

# mktime 配合 ctime来取代asctime (推荐)
"""自动识别当前是周几"""
res = time.mktime(ttp)
strvar = time.ctime(res)
print(strvar)

# sleep()         程序睡眠等待
"""
time.sleep(10)
print("我睡醒了")
"""

# strftime()      格式化时间字符串(格式化字符串,时间元祖)
strvar = time.strftime("%Y-%m-%d %H:%M:%S")
strvar = time.strftime("%Y-%m-%d %H:%M:%S 是杜兰特的死神的生日")
print(strvar)

strvar = time.strftime("%Y-%m-%d %H:%M:%S", (2020, 10, 31, 10, 10, 10, 0, 0, 0))
print(strvar)

# strptime()      将时间字符串通过指定格式提取到时间元组中(时间字符串,格式化字符串)
"""注意:替换时间格式化标签时,必须严丝合缝.不能随便加空格或特殊字符"""
ttp = time.strptime("2020年的9月29号是死神杜兰特的生日,晚上20点30分40秒准备轰趴派队", "%Y年的%m月%d号是死神杜兰特的生日,晚上%H点%M分%S秒准备轰趴派队")
print(ttp)

"""
strftime : 把时间元组 => 字符串
strptime : 把字符串   => 时间元组
"""

# perf_counter()  用于计算程序运行的时间 (了解)

# startime = time.perf_counter()
startime = time.time()
for i in range(10000000):
	pass
# endtime = time.perf_counter()
endtime = time.time()
print("中间用时:", endtime - startime)



# ### 制作进度条
import time

"""
[###################################] 100%
[##############                     ] 40%
[#############################      ] 80%
"""
# (1) 定义进度条样式
"""
# -50s 50个空格，居左显示
print("[%-50s]" % ("#"))
print("[%-50s]" % ("######################"))
print("[%-50s]" % ("##############################################"))
"""

# (2) 让进度条动起来
"""
strvar = ""
for i  in range(50):
	time.sleep(0.1)
	strvar += "#"
	print("\r[%-50s]" % (strvar) , end="")
"""


# (3) 加上百分比
# 显示进度条
def myprocess(percent):
	if percent > 1:
		percent = 1

	# 打印对应的#号数量 * "#" => 字符串#号效果
	strvar = int(percent * 50) * "#"
	# 进行打印 %% => % 两个百分号才能表达一个普通的百分号的意思
	print("\r[%-50s] %d%%" % (strvar, percent * 100), end="")


# 接受数据
recv_size = 0
total_size = 1000
while recv_size < total_size:
	time.sleep(0.01)
	recv_size += 10

	percent = recv_size / total_size  # 0.5
	myprocess(percent)
